﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Globalization;
using System.Linq;
using System.Speech.Recognition;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace SpeechVoiceRecognize
{
    public partial class MainForm : Form
    {
        public MainForm()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //初始化语音识别引擎并选择要用于语音识别的识别器。
            //配置和监控语音识别引擎的输入。
            //配置识别参数。
            //注册事件通知并处理事件。
            //加载和卸载语音识别语法。
            //启动、暂停和停止识别操作。

            // 创建一个新的语音识别器
            SpeechRecognitionEngine recognitionEngine = new SpeechRecognitionEngine(new CultureInfo("ZH-CN"));

            // 创建语法规则，这里使用数字和颜色作为例子
            Choices colors = new Choices(new string[] { "测试", "你好小迪", "开始", "结束" });
            GrammarBuilder gb = new GrammarBuilder();
            gb.Append(colors);
            Grammar grammar = new Grammar(gb);

            recognitionEngine.LoadGrammar(grammar);
            // 配置识别器完成时的回调方法
            recognitionEngine.SpeechRecognized += OnSpeechRecognized;

            // 开始识别过程--需要插入麦克凤等语音输入设备
            recognitionEngine.SetInputToDefaultAudioDevice();
            recognitionEngine.RecognizeAsync(RecognizeMode.Multiple);
        }

        // 定义当识别到语音时触发的事件处理方法
        void OnSpeechRecognized(object sender, SpeechRecognizedEventArgs e)
        {
            //MessageBox.Show("Speech recognized: " + e.Result.Text);
            tb_words.Text += $"\r\n{e.Result.Text}";
        }
    }
}
